//package com.u2b.db.utils;
//
//import java.io.InputStream;
//import java.sql.Connection;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.sql.Statement;
//import java.util.Properties;
//
//import com.u2b.db.datasource.ConnectionPool;
//
//public class ConnectionUtils
//{
//    private static ConnectionUtils instance = new ConnectionUtils();
//    private static ConnectionPool poolLocal = null;
//    private static ConnectionPool poolRead = null;
//    private static ConnectionPool poolWrite = null;
//    private static Properties properties;
//    public static int LOCAL = 0;
//    public static int SAE_READ = 1;
//    public static int SAE_WRITE = 2;
//    private int flag;
//
//    private ConnectionUtils()
//    {
//
//    }
//
//    public static ConnectionUtils getInstance(int flag)
//    {
//        if (instance == null)
//        {
//            synchronized (ConnectionUtils.class)
//            {
//                if (instance == null)
//                {
//                    instance = new ConnectionUtils();
//                }
//            }
//        }
//
//        return instance;
//    }
//
//    public void init(InputStream in)
//    {
//        properties = new Properties();
//        try
//        {
//            Class.forName("com.mysql.jdbc.Driver").newInstance();
//            properties.load(in);
//            if (flag == this.LOCAL)
//            {
//                poolLocal = new ConnectionPool(properties.getProperty("localDB"), properties.getProperty("localUser"), properties.getProperty("localPassword"));
//            }
//            else
//            {
//                poolRead = new ConnectionPool(properties.getProperty("saeReadDB"), properties.getProperty("accessKey"), properties.getProperty("secretKey"));
//                poolWrite = new ConnectionPool(properties.getProperty("saeWriteDB"), properties.getProperty("accessKey"), properties.getProperty("secretKey"));
//            }
//        }
//        catch (Exception e)
//        {
//            throw new RuntimeException("��ȡ�����ļ���ʱ�����", e);
//        }
//    }
//
//    public Connection getConnection()
//    {
//        Connection conn = null;
//        try
//        {
//            switch (flag)
//            {
//            case 0:
//                conn = poolLocal.getConnection();
//                break;
//            case 1:
//                conn = poolRead.getConnection();
//                break;
//            case 2:
//                conn = poolWrite.getConnection();
//                break;
//            }
//        }
//        catch (Exception e)
//        {
//            throw new RuntimeException("�ڻ�����ӵ�ʱ�������", e);
//        }
//        return conn;
//    }
//
//    public void free(Connection conn, Statement st, ResultSet rt)
//    {
//        try
//        {
//            if (rt != null)
//                rt.close();
//        }
//        catch (SQLException e)
//        {
//
//            e.printStackTrace();
//        }
//        finally
//        {
//            try
//            {
//                if (st != null)
//                    st.close();
//            }
//            catch (SQLException e)
//            {
//                e.printStackTrace();
//            }
//            finally
//            {
//                if (conn != null)
//                {
//                    try
//                    {
//                        conn.close();
//                    }
//                    catch (SQLException e)
//                    {
//                        e.printStackTrace();
//                    }
//
//                }
//
//            }
//        }
//
//    }
// }
